\section{已知Bug}

\subsection{UI}

\begin{enumerate}
	\item QtFlex 的控件从左侧停靠到再次显示时，控件跑到了右侧停靠去了。貌似整个的停靠恢复是错误恢复不到原来的状态。另外，停靠显示预览时，也是非常的模糊。具体观察，就是底部或者顶部区域是透明的。
	\item QtFlex 中间的控件变为float状态后，剩余的控件不能立即占满全部空间。
	\item 当处于中心的控件变为float时，指示器应该指示只能放在中心区域。
	
	\item qribbon如果没有从setting读取到一个theme的话，会报错。
	
	\item qribbon的弹出菜单位置有点高，遮挡了按钮上的文字。
	
	\item 在win10下，qribbon最小化，再最大化之后，当前的page会消失。
	
	\item QWidget::mapTo "parent must be in parent hierarchy"
	
	\item qtflex 集成到qribbon窗口中，不能设置标题，会报内存访问的错误。
	
	\item 绘制坐标轴的时候，由于需要设定坐标轴等比例。需要对xy轴进行同时设置。但是问题在于有的时候，新生成的tickerlabel文字宽度发生来改变，导致坐标轴的显示区域发生了变化，但是此时没有及时的更新range和tickerstep，导致坐标轴又不成比例了。而且这个可能会导致递归的问题，如果不断的变化range，文本宽度不断变化，就死循环了。因为是先有的文本，然后计算的rect区域。
	
	\item 在坐标轴区域，鼠标指针莫名其妙变成了调整间距的光标。
	
	\item x坐标在滚轮作用下只能左右滑动，而不能放大缩小。bug分析：由于只设置了x的比例是y的相等比例，所以y轴的刻度才是决定其他坐标轴的关键，其他坐标轴都是被动的。x轴响应滚轮事件之后，虽然计算得到了一个新的range，但是马上又调用replot事件，导致又根据y轴的刻度重新又得到了一个新的x的range，其实还跟原来一样，导致滚轮事件无效。但是滚轮事件使得坐标轴的中心发生了变化，所以x轴的range虽然没有变化，但是发生了左右偏移，所以才有了这个bug。要么就是把单个轴的滚轮事件关掉。
	
	\item 为了使得坐标轴有一个比较好的显示效果，xy轴上的显示刻度数需要足够多，又不能太多，但是默认的刻度值不能适应窗口大小的变化。
	
	\item 所有的实体在绘制的时候都会被绘制两次，因为container类型也是一种实体类型，而实体类型在创建的时候都会被设置一个layer，也就是加入到layer的实体列表当中，而container本身保存的就是一个列表，所以这个列表被保存了两次。一个勉强的解决办法就是不实现entitycontainer的draw函数，那么即使被调用，也不会画出来了。
	
\hspace*{2em}最后的解决办法是，子类在调用父类的构造函数的时候，设置父绘图对象为空，这样，就不会调用setlayer函数，但是还需要在子类的构造函数中完成初始化操作。需要注意的是，此时所有的实体都不是默认再创建的时候被添加到层当中，所以需要手动添加。
	
	\item 在绘制的过程中，如何实现拖拽。比如当前的action是画圆，但是想要拖拽一下调整位置，坐标轴本身是支持拖拽的，但是可能有冲突。可以考虑再添加一个拖拽的判断，如果是拖拽，则新建一个平移的函数。或者也可以长按滚轮键来实现拖拽。要么还可以在每一个图形绘制结束后就结束action，而不是连续模式。
\end{enumerate}